草庐IT

c++ - 使用 ofstream 写入 txt 文件时强制编码

我使用ofstream编写了一个txt文件,出于各种原因,该文件应该使用本地编码而不是UTF8。处理文件的机器与目标本地具有不同的本地化。有没有办法在写入文件时强制编码?问候,宜兰 最佳答案 您可以在ofstream对象上调用std::ios::imbue来修改语言环境。这不会影响全局语言环境。std::ofstreamos("output.txt");std::localemylocale("");os.imbue(mylocale);os注意std::locale构造函数的参数,它依赖于实现。例如,德语语言环境可以是:std::

c++ - 防止在 _popen 上打开命令行

我正在用C++像这样打开一个进程FILE*pipe=_popen(ss.str().c_str(),"r");这将创建一个cmd窗口,该窗口位于桌面的最前面。我想阻止cmd窗口打开,如果不能打开,我想办法将其最小化。尝试过的解决方案:HWNDhWnd=GetConsoleWindow();ShowWindow(hWnd,SW_HIDE);但这只有在您在持有cmd窗口的进程中调用该函数时才有效。 最佳答案 不使用_popen,而是使用CreateProcess和CREATE_NO_WINDOW标志。

c++ - 以编程方式打开系统信息

我正在尝试以编程方式跨不同的Window版本打开Window的“系统信息”。目前它涉及打开一个cmd.exe窗口,然后找到“系统信息”。问题是当“系统信息”打开时,我有一个无关的黑色命令行窗口。有没有这个额外窗口的方法? 最佳答案 这是一个已知的应用程序,如写字板,cmd.exe可以找到它的原因。只需使用ShellExecute打开msinfo32.exe。例如:#include#pragmacomment(lib,"shell32.lib")...//Messagehandlerforaboutbox.INT_PTRCALLBAC

c - 使用 Windows slim 读/写锁

/*languageCcode*/#include"windows.h"typedefstructobject_s{SRWLOCKlock;intdata;}object_t,*object_p;/*ownandpointertype*/voidthread(object_px){AcquireSRWLockExclusive(&x->lock);//...dosomethingthatcouldprobablychangex->datavalueto0if(x->data==0)free(x);elseReleaseSRWLockExclusive(&x->lock);}voidma

c - 如何编写自己的基本磁盘扫描程序

我想编写一些基本的磁盘扫描器实用程序。基本上,我希望能够按照系统磁盘实用程序(如Windows中的错误检查和碎片整理)的方式读取写入磁盘的某个文件的原始字节。我想用C来做。我的第一步应该是什么?显然fopen是不够的。任何指导将不胜感激(我不要求解决方案,只是一些理论并朝着正确的方向推进,因为我什至不知道从哪里开始...)。 最佳答案 以下资源可能有用:http://support.microsoft.com/kb/100027http://www.codeproject.com/KB/system/rawsectorio.aspx

c++ - 在C++中实现C库函数

用C++实现C库有什么缺点?该库将用于使用VisualStudio2008或更新版本为普通PC构建Windows应用程序。目前尚不清楚为什么规范声明它应该是C库。我猜他们想要的是纯C-API,而不是纯C库。但我的老板不同意。无论如何,我想做的是extern"C"所有函数声明,并在实现文件中使用C++。我做了一些测试,即使应用程序被编译为C(通过更改VisualStudio中的项目选项),一切都运行良好。 最佳答案 我见过有人这样做是为了将STL集合暴露给C程序。如果您确定该库只会在具有健全的C/C++编译器(例如,仅限VS和gcc)

c++ - 如何检查文件是否在 Windows 网络共享上?

我需要检查是否可以通过网络访问文件。我正在检查的值GetFileAttributes("\\\\Foo\\Bar\\foobar.txt")&FILE_ATTRIBUTE_OFFLINE但从未设置。实现这一目标的更可靠方法是什么? 最佳答案 离线是一种特殊的文件状态,您也可以在网络文件上设置为离线状态,但您必须自己设置。并非每个脱机文件都会自动标记为脱机使用。我认为资源管理器上什至有一个用于离线文件的特殊覆盖图标(黑色时钟?)。我认为使用PathIsNetworkPath()可以检查文件是否在网络上。

c++ - 为发送到方法的参数分配的大小

如果我知道函数的帧指针和返回地址,是否有办法知道为发送给函数的参数分配的空间大小?(最好不使用调试符号) 最佳答案 一般来说,不会。首先,您不知道调用约定,因此您不知道参数是如何传递的以及应该由谁来清理它们。即使您确实知道调用约定,我也不相信有一种万无一失的方法来确定您的要求。 关于c++-为发送到方法的参数分配的大小,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7835932

java - 使用 Windows 服务调用使用 JNI 和 LoadLibrary 的 Java 程序的问题

我正在创建一个调用java程序的Windows服务程序。这是部分代码,hModule是一个全局变量,在ServiceStart中调用了LoadLibrary,之后调用了invokeJVM。我设法启动了该服务并且它运行良好,但是,每当我停止该服务时,它都会给我一个错误:Windows无法停止本地计算机上的服务错误1067:Windows服务意外终止添加了额外的日志记录后,发现意外终止错误发生的地方是invokeJVM函数的返回。当我检查事件查看器时,它给了我一些BEX错误,谷歌搜索表明这是一个堆栈溢出错误,但我无法确定它的原因,知道为什么吗?HMODULEhModule;VOIDServ

c - 是否可以 Hook 任何时间检索功能

我需要Hook任何试图检索系统时间的函数,以便为不同的应用程序生成“时间无关”的重播。某些事件(如伪随机数生成)取决于对time()的调用,但例如其他一些事件会调用timeGetTime()或_time64()。我需要Hook(在Windows中)以捕获所有时间检索函数的最少函数集是什么。实际上有可能Hook这些功能吗?我试图在time()上完成它,但我的钩子(Hook)被忽略了。我已成功Hook到其他函数(如rand),但我的time()Hook似乎被忽略了。我正在使用Detours,但我愿意使用任何其他API拦截工具。 最佳答案